home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #087 (19xx)(APS Electronic).zip / Bavarian #087 (19xx)(APS Electronic).adf / Programme / AktieVD3.25C.ASC < prev    next >
Text File  |  1989-02-05  |  22KB  |  597 lines

  1.    IF FRE(-2) <50000& THEN CLEAR,70000&
  2. anfang:
  3.    CLEAR
  4.    ON ERROR GOTO achtung
  5.    CHDIR ":Daten"
  6.    DIM SHARED nam$(8,16),aktie$(8),zahl$(8,5),monat$(14),anz(12),anf(15),wert1$(10),geld(40) 
  7.    DIM SHARED wahr(40),tag$(366),wert(8,366),defis$(20),tag
  8.    ausgabeart=0
  9.    a=VAL(RIGHT$(DATE$,4)) 
  10.    jahr=a-1988 
  11.    DATA "Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"    
  12. 31 DATA 31,29,31,30,31,30,31,31,30,31,30,31
  13. 32 DATA "USA","CAN","GB","IRL","CH","B","F","NL","D","I","DK","NK","SK","YU","P","E","J","A"
  14.    FOR q=1 TO 12:READ a$:monat$(q)=a$:NEXT
  15.    FOR w=1 TO 12
  16.    READ w$:e=VAL(w$)
  17.    IF e=29 AND a/4 <> INT(a/4) THEN e=28
  18.    FOR q=1 TO e:tag=tag+1
  19.    IF q=1 THEN anf(w)=tag
  20.    tag$(tag)=STR$(q)+"."+monat$(w)
  21.    anz(w)=e  
  22.    NEXT:NEXT 
  23.    RESTORE 31:a=VAL(LEFT$(DATE$,2)):b=VAL(MID$(DATE$,4,2)):tag=0
  24.    FOR q=1 TO a-1
  25.    READ c$:c=VAL(c$):tag=tag+c
  26.    NEXT:tag=tag+b:tag=(INT(tag/7))*7
  27.    RESTORE 32:FOR q = 1 TO 18 
  28.    READ defis$(q):NEXT
  29.    OPEN "kurse" FOR INPUT AS #1
  30.    FOR q = 1 TO 36
  31.    INPUT #1,wahr(q)
  32.    NEXT:CLOSE #1
  33.    SCREEN 2,640,256,2,2  
  34.    WINDOW 1,"                       AktieVD3.25 von Helmut Gaberschek",(0,0)-(631,200),0,2
  35. Colors:
  36.    PALETTE 2,0,0,0  
  37.    PALETTE 1,.1,1,1 
  38.    PALETTE 0,.5,.5,.5  
  39.    PALETTE 3,.9,.9,.9   
  40.    PAINT(10,10),3
  41.    MENU 1,0,1,"Projekt      "
  42.    MENU 1,1,1,"Info         "
  43.    MENU 1,2,1,"Neustart     " 
  44.    MENU 1,3,1,"Daten laden  "
  45.    MENU 1,4,1,"Daten sichern"
  46.    MENU 1,5,1,"Daten löschen"
  47.    MENU 1,6,1,"Ende         "       
  48.    MENU 2,0,1,"Ausgabe      "
  49.    MENU 2,1,1,".. in Zahlen -" 
  50.    MENU 2,2,1,".. in Grafik  " 
  51.    MENU 3,0,1,"Spezielles   "
  52.    MENU 3,1,1,"Statistik    "
  53.    MENU 3,2,1,"Drucken      "
  54.    MENU 3,3,1,"Umrechnen    "
  55.    MENU 3,4,1,"Valuten      "
  56.    MENU 3,5,1,"Dividende    "
  57.    MENU 4,0,0," "
  58.    LINE(500,5)-(590,20),,bf
  59.    LINE(190,5)-(430,20),,bf
  60.    LINE(20,5)-(120,20),,bf
  61.    CALL linieren(500!,5!,590!,20!)
  62.    CALL linieren(190!,5!,430!,20!)
  63.    CALL linieren(20!,5!,120!,20!)
  64.    COLOR 2,1:LOCATE 2,34:PRINT"AKTIEN V3.2"
  65.    LOCATE 2,5:PRINT DATE$
  66.    LINE (10,40)-(180,178),3,bf
  67.    CALL linieren(10!,40!,178!,178!)
  68.    LINE (210,40)-(610,177),3,bf
  69.    CALL linieren(210!,40!,610!,177!)
  70.    w=0
  71.    FOR q = 1 TO 16 STEP 2:w=w+1:COLOR 2,3
  72.    LOCATE q+6,3:PRINT w:LOCATE q+6,5:PRINT"." 
  73.    COLOR 3,0:LOCATE q+6,6:PRINT"                ":NEXT 
  74.    
  75.   CALL info:LOCATE 5,38:COLOR 2,3:PRINT tag$(tag)+" - "+tag$(tag+6) 
  76.   MOUSE ON:MENU ON 
  77. wahl1:
  78.    WHILE MOUSE(0)>-1
  79.    IF fehler=1 THEN anfang
  80.    IF fehler=2 THEN fehler=0:BEEP:CALL gitter
  81.    COLOR 2,1:zeile=CSRLIN:spalte=POS(0) 
  82.    LOCATE 2,65:PRINT TIME$
  83.    LOCATE zeile,spalte
  84.    menl=MENU(0):menp=MENU(1)
  85.    IF menl=1 THEN CALL projekt
  86.    IF menl=2 THEN CALL ausgabe
  87.    IF menl=3 THEN CALL spezi
  88.    WEND
  89.    CALL eingabe
  90.    GOTO wahl1
  91. SUB projekt STATIC 
  92.    SHARED menp
  93.    IF menp=1 THEN CALL info
  94.    IF menp=2 THEN CALL neu
  95.    IF menp=3 THEN CALL laden
  96.    IF menp=4 THEN CALL speichern
  97.    IF menp=5 THEN CALL loschen
  98.    IF menp=6 THEN CALL ende
  99.    END SUB
  100. SUB ausgabe STATIC
  101.    SHARED menp 
  102.    IF menp=1 THEN CALL gitter
  103.    IF menp=2 THEN CALL grafik
  104.    END SUB
  105. SUB spezi STATIC
  106.    SHARED menp
  107.    IF menp=1 THEN CALL statistik
  108.    IF menp=2 THEN CALL drucken
  109.    IF menp=3 THEN CALL umrechnen
  110.    IF menp=4 THEN CALL changer
  111.    IF menp=5 THEN CALL dividende 
  112.    END SUB
  113. SUB gitter STATIC
  114.    SHARED ausgabeart
  115.    IF WINDOW(0)=2 THEN WINDOW CLOSE 2:WINDOW OUTPUT 1
  116.    LINE(210,40)-(610,177),3,bf
  117.    LINE(210,40)-(610,177),2,b
  118.    LINE(16,183)-(630,196),3,bf
  119.    MENU 2,1,1,".. in Zahlen -"
  120.    MENU 2,2,1,".. in Grafik  "
  121.    ausgabeart=0 
  122.    FOR q = 1 TO 16 STEP 2
  123.    LINE(230,48+q*8)-(587,48+q*8),0
  124.    NEXT
  125.    CALL dreieck(215!,166!,235!,176!,18!,3!)
  126.    CALL dreieck(585!,165!,605!,176!,2!,3!)
  127.    CALL werteeinsetzen 
  128.    WINDOW OUTPUT 1
  129.    END SUB
  130. SUB werteeinsetzen STATIC
  131.    COLOR 2,3:LOCATE 5,38:PRINT tag$(tag)+" - "+tag$(tag+6)+"         " 
  132.    FOR q = 1 TO 8
  133.    FOR w = 0 TO 6
  134.    LOCATE q*2+5,31+w*6:a$=STRING$(6-LEN(STR$(wert(q,tag+w))),32) 
  135.    PRINT wert(q,tag+w);a$ 
  136.    NEXT:NEXT
  137.    END SUB
  138. SUB neu STATIC
  139.    SHARED flag,fehler
  140.    CALL sure("     Neustart !?"):CALL gitter
  141.    IF flag=1 THEN fehler=1
  142.    END SUB
  143. SUB ende STATIC
  144.    SHARED flag
  145.    CALL sure("  Programm beenden !?"):CALL gitter 
  146.    IF flag=1 THEN MENU RESET:SYSTEM
  147.    END SUB
  148. SUB speichern STATIC
  149.    SHARED e,wahl,b$
  150.    CALL datensl1("Daten sichern"):CALL gitter  
  151.    IF e=1 THEN CALL gitter:EXIT SUB
  152.    CALL gitter
  153.    OPEN b$ FOR OUTPUT AS #1
  154.    FOR q = 1 TO 366
  155.    PRINT #1,wert(wahl,q)
  156.    NEXT:CLOSE #1:wahl=0 
  157.    END SUB
  158. SUB laden STATIC
  159.    SHARED e,wahl,b$
  160.    CALL datensl1("Daten laden"):CALL gitter 
  161.    IF e = 1 THEN CALL gitter:EXIT SUB
  162.    OPEN b$ FOR INPUT AS #1
  163.    FOR q = 1 TO 366
  164.    INPUT #1,wert(wahl,q)
  165.    IF wert(wahl,q)<0 OR wert(wahl,q)>99999& THEN q=366:ERROR 54
  166.    NEXT:CLOSE #1:wahl=0:CALL gitter
  167.    END SUB
  168. SUB loschen STATIC
  169.    SHARED e,b$
  170.    CALL datensl1("Daten löschen"):CALL gitter             
  171.    IF e = 1 THEN CALL gitter:EXIT SUB
  172.    KILL b$:CALL gitter
  173.    END SUB
  174. SUB datensl1(a$) STATIC
  175.    SHARED e,b$,wahl,flag,b$   
  176.    e=0
  177.    CALL datensl(a$)
  178.    CALL auswahl(8!,16!,240!,80!,2!)
  179.    IF aktie$(wahl)=STRING$(0,32)  THEN BEEP:BEEP:e=1:PAINT(400,100),3:EXIT SUB
  180.    LOCATE 2+wahl,7:COLOR 2,1:PRINT " "+aktie$(wahl)+" "
  181.    CALL maus1(10!,93!,80!,106!,156!,93!,222!,106!)
  182.    IF flag=1 THEN e=1
  183.    IF e=1 THEN EXIT SUB  
  184.    b$=aktie$(wahl)+STR$(1988+jahr)+".Dat"
  185.    END SUB
  186. SUB datensl(a$) STATIC
  187.    LINE(210,40)-(610,178),3,bf
  188.    LINE(210,40)-(610,178),2,b
  189.    WINDOW CLOSE 2:CALL linieren(294!,46!,534!,171!)
  190.    WINDOW 2,a$,(294,54)-(530,168),0,2
  191.    PAINT (400,100),0:COLOR 3,0  
  192.    LINE(10,93)-(80,106),1,bf:COLOR 2,1:LOCATE 13,4:PRINT "ZURÜCK" 
  193.    LINE(156,93)-(222,106),1,bf:LOCATE 13,24:PRINT "OK"
  194.    CALL linieren(10!,93!,80!,106!):CALL linieren(156!,93!,222!,106!)
  195.    LOCATE 1,4:COLOR 3,0:PRINT "     Welche Aktie ?"
  196.    FOR q = 1 TO 8 
  197.    LOCATE q+2,2:PRINT q".  "aktie$(q)
  198.    NEXT 
  199.    END SUB
  200.    
  201. SUB auswahl(x1,y1,x2,y2,su) STATIC
  202.    SHARED wahl
  203. 10 IF MOUSE(0)>-1 THEN 10
  204.    x=MOUSE(1):y=MOUSE(2) 
  205.    IF x<x1 OR x>x2 OR y<y1 OR y>y2 THEN BEEP:BEEP:GOTO 10
  206.    x=INT(x/8):y=INT(y/8)
  207.    wahl=y-su+1
  208.    END SUB
  209. SUB grafik STATIC
  210. grafik1:
  211.    SHARED ausgabeart,jahr,flag5,jump,flag4,help1,help,num,num1,grafikfehler,hi,lo,flag,links,hi1,lo1
  212.    MENU 2,1,1,"..in Zahlen  "
  213.    MENU 2,2,1,"..in Grafik -"
  214.    ausgabeart=1
  215.    LINE(211,41)-(609,176),0,bf:LINE (210,40)-(610,177),2,b
  216. 18 LINE(552,183)-(622,193),0,bf 
  217.    COLOR 3,0:LOCATE 24,71:PRINT 1988+jahr 
  218.    CALL linieren(552!,183!,622!,193!)
  219.    FOR q = 0 TO 11
  220.    LINE (q*44+16,183)-(q*44+48,193),0,bf 
  221.    CALL linieren(q*44+16!,183!,q*44+48!,193!)
  222.    LOCATE 24,INT(5.53*q+3)+1:PRINT LEFT$(monat$(q+1),3)
  223.    NEXT:COLOR 3,3:LOCATE 5,30:PRINT"                                                  "
  224.    flag5=0:jump=0:flag4=0                                 
  225. 11 IF MENU(0)>0 AND MENU(1)>0 THEN GOTO 12
  226.    IF MOUSE(0)>-1 THEN GOTO 11
  227.    x=MOUSE(1):y=MOUSE(2) 
  228.    IF x>40 AND x<163 AND y>45 AND y<170 THEN help1=INT(y/8):num=INT((help1-7)/2)+2:COLOR 2,0:LOCATE help1+1,6:PRINT aktie$(num):flag4=1:flag4=1
  229.    IF y>177 THEN num1=INT((x/5.53-4)/8)+1:help=INT(5.53*(num1-1)+3)+1:COLOR 2,0:LOCATE 24,help:PRINT LEFT$(monat$(num1),3):flag4=2:jump=1:flag5=1 
  230.    IF y>177 AND x>560 THEN COLOR 2,0:LOCATE 24,71:PRINT 1988+jahr:flag4=2:jump=2:flag5=1  
  231.    IF flag4=0  THEN BEEP:GOTO 11
  232.    IF flag4<> 1 OR flag5<>1 THEN 11    
  233.    grafikfehler=0:CALL hilo(num!,num1!):hi1=hi:lo1=lo
  234.    IF grafikfehler=1 THEN BEEP:ERROR 54
  235.    COLOR 3,0:LOCATE help1+1,6:PRINT aktie$(num)
  236.    IF hi=0 OR lo=0 THEN BEEP:GOTO 18
  237.    IF jump=2 THEN CALL jubersicht 
  238.    IF jump=1 THEN CALL mubersicht
  239.    IF flag=1 AND jump=1 THEN  18
  240.    IF flag<> 2 THEN grafik1      
  241. 12 links=0:CALL gitter:END SUB
  242. SUB jubersicht STATIC
  243.    SHARED rechts,links,hi,lo,flag,jahr,num,abst
  244.    LINE(221,41)-(612,176),0,bf:rechts=0:links=0
  245.    LINE(220,50)-(220,170),3
  246.    LINE(220,170)-(600,170),3
  247.    IF wert(8,1)>0 THEN CALL hilo(8!,13!):CALL second
  248.    IF lo=0 OR hi=0 THEN CALL gitter:ERROR 54:flag=2:EXIT SUB   
  249.    CALL pfeil(220!,50!,600!,170!)
  250.    CALL teilung(220!,170!,586!,7!,110!):abst=0
  251. 27 IF rechts=0 THEN rechts=1 ELSE rechts=0   
  252.    CALL nina(365!,num,222!,60!,370!,220!)
  253.    COLOR 3,0:LOCATE 24,71:PRINT 1988+jahr
  254.    LOCATE 2*num+5,6:PRINT aktie$(num):COLOR 1,0
  255.    CALL zeifertig:IF flag=1 AND rechts=1 AND wert(8,1)>0 AND num<>8 THEN num=8:GOTO 27
  256.    END SUB
  257. SUB second STATIC
  258.    SHARED hi,lo,hi1,lo1
  259.    IF hi1>hi  THEN hi=hi1
  260.    IF lo1<lo  THEN lo=lo1
  261.    END SUB
  262. SUB zeifertig STATIC
  263.    SHARED flag
  264.    LINE(16,183)-(630,196),3,bf
  265.    LINE(352,183)-(416,193),0,bf:CALL linieren(352!,183!,416!,193!)   
  266.    LINE(440,183)-(504,193),0,bf:CALL linieren(440!,183!,504!,193!) 
  267.    LOCATE 24,46:PRINT "WEITER":LOCATE 24,57:PRINT"ZURÜCK" 
  268.    CALL maus1(352!,183!,488!,194!,440!,183!,504!,194!)
  269.    LINE(16,183)-(630,196),3,bf
  270.    END SUB                    
  271. SUB mubersicht STATIC
  272.    SHARED links,rechts,num1,num
  273.    IF links=1 THEN links=0:w=420:GOTO 17
  274.    LINE(221,42)-(609,169),0,bf
  275.    FOR q = 0 TO 1
  276.    LINE(240+q*180,66)-(240+q*180,170),3
  277.    CALL pfeil(240+q*180!,66!,390+q*180!,170!)
  278.    LINE (240+q*180,170)-(390+q*180,170),3
  279.    CALL teilung(240+q*180!,170!,392+q*180!,5!,100!)
  280.    NEXT:w=240!:links=1
  281. 17 CALL nina(anz(num1),num,w,74!,150!,w) 
  282.    CALL zeifertig
  283.    END SUB
  284.    SUB nina(fini,num,b,c,abst1,x) STATIC
  285.    SHARED  hi,lo,abst,links,num1,rechts
  286.    IF rechts=1 THEN farbe=2 ELSE farbe=1
  287.    IF fini<300 THEN farbe=2
  288.    IF fini<300 THEN multi = 5 ELSE multi=1 AND anf(num1)=1
  289.    IF multi = 1 THEN COLOR 2,3:LOCATE 5,38:PRINT "Min.:";lo;" Max.:";hi
  290.    IF multi = 5 THEN COLOR 2,0:LOCATE 8,55-20*links:PRINT"Min.:";lo:LOCATE 9,55-20*links:PRINT"Max.:";hi:LOCATE 7,55-20*links:PRINT monat$(num1)
  291.    diff=hi-lo:diff$=STR$(diff)      
  292.    pixel=diff/(170-c):wert1=wert(num,anf(num1))-lo:y=170-wert1/pixel  
  293.    abst=INT(1000/pixel) 
  294.    IF farbe=2 THEN CALL teilung1(x,pixel,abst1)
  295.    FOR q = anf(num1) TO  anf(num1)+fini-1 
  296.    hx=x:hy=y:IF wert(num,q)=0 THEN q=anf(num1)+fini-1:GOTO 90
  297.    IF wert(num,q)<lo THEN wert(num,q)=lo
  298.    IF wert(num,q)>hi THEN wert(num,q)=hi
  299.    x=x+1*multi:wert1=wert(num,q)-lo:y=170-wert1/pixel  
  300.    LINE(hx,hy)-(x,y),farbe
  301. 90 NEXT
  302.    LOCATE INT(y/8)+1,INT(x/8)+1:COLOR 3,0:PRINT num
  303.    LOCATE 2*num+5,6:COLOR 3,0:PRINT aktie$(num)
  304.    END SUB
  305. SUB hilo(num!,num1!) STATIC
  306.    SHARED hi,lo,jahr,e,day,day1,grafikfehler
  307.    e=0:r=tag
  308.    IF num1 < 13 THEN r=anf(num1)+anz(num1)-1 ELSE anf(num1)=1
  309.    hi=wert(num,anf(num1)):lo=hi 
  310.    FOR q = anf(num1) TO r
  311.    IF wert(num,q)=0 AND num1<13 THEN grafikfehler=1:GOTO 70
  312.    IF wert(num,q)=0 THEN 70 
  313.    IF wert(num,q)<lo THEN lo=wert(num,q):day1=q
  314.    IF wert(num,q)>hi THEN hi=wert(num,q):day=q
  315. 70 NEXT 
  316.    END SUB
  317. SUB teilung(x,y,x1,abst,abst1) STATIC
  318.    FOR q = x TO x1 STEP abst
  319.    LINE(q,y-1)-(q,y-abst1+3),3  
  320.    NEXT
  321.    END SUB
  322. SUB teilung1(x,pixel,abst1) STATIC
  323.    SHARED hi,lo:p=10:dif=hi-lo 
  324.    IF dif>120 THEN p=100
  325.    IF dif>1200 THEN p=1000
  326.    IF dif>12000& THEN p=10000
  327.    COLOR 2,0:LOCATE 7,71:PRINT p;" "
  328.    a=(INT(lo/p))*p+p
  329. 91 IF a>=hi THEN EXIT SUB
  330.    q=170-INT((a-lo)/pixel):LINE(x,q)-(x+abst1,q),3
  331.    a=a+p:GOTO 91:END SUB
  332. SUB pfeil(x,y,x1,y1) STATIC
  333.    LINE (x,y)-(x+3,y+3),3
  334.    LINE (x,y)-(x-3,y+3),3
  335.    LINE (x1,y1)-(x1-3,y1-3),3
  336.    LINE (x1,y1)-(x1-3,y1+3),3
  337. END SUB   
  338. SUB info STATIC
  339.    WINDOW CLOSE 2:CALL linieren(224!,50!,596!,167!)
  340.    WINDOW 2,"              Autorenvermerk",(224,60)-(592,167),0,2
  341.    PAINT(15,15),0:COLOR 3,0
  342.    LOCATE 2,4:PRINT"Programmname :  Aktien V3.2"
  343.    LOCATE 3,4:PRINT"Programmart  :  Aktienverwaltungsprogramm"
  344.    LOCATE 4,4:PRINT"Computer     :  Amiga 500,1000,2000"
  345.    LOCATE 5,4:PRINT"Sprache      :  Amiga Basic"
  346.    LOCATE 6,4:PRINT"Autor        :  Helmut Gaberschek"
  347.    LOCATE 8,16:PRINT"(c) 30.7.1988"
  348.    LINE (30,65)-(78,83),1,bf
  349.    CALL linieren(30!,65!,78!,83!)
  350.    COLOR 2,1:LOCATE 10,7:PRINT"OK"
  351.    LINE (305,65)-(353,83),1,bf
  352.    CALL linieren(305!,65!,353!,83!)
  353.    LOCATE 10,41:PRINT"OK"
  354.    CALL maus1(30!,65!,78!,83!,305!,65!,353!,83!) 
  355.    CALL gitter
  356.    END SUB
  357. SUB maus1(x,y,x1,y1,x2,y2,x3,y3) STATIC
  358.    SHARED flag
  359.    flag=0
  360. mau1:
  361.    IF MOUSE(0)>-1 THEN GOTO mau1
  362.    xk=MOUSE(1):yk=MOUSE(2)
  363.    IF xk>x AND xk<x1 AND yk>y AND yk<y1 THEN flag=1
  364.    IF xk>x2 AND xk<x3 AND yk>y2 AND yk<y3 THEN flag=2
  365.    IF flag>0 THEN EXIT SUB
  366.    GOTO mau1:END SUB
  367. SUB linieren(x,y,x1,y1) STATIC
  368.    LINE (x,y)-(x1,y),2
  369.    LINE (x1,y)-(x1,y1),2
  370.    LINE (x,y)-(x,y1),2
  371.    LINE (x,y1)-(x1,y1),2
  372.    LINE (x1,y+5)-(x1+5,y1),2,bf
  373.    LINE (x+5,y1)-(x1+5,y1+3),2,bf 
  374.    END SUB
  375. SUB dreieck(x,y,x1,y1,p1,farbe) STATIC
  376.    a = 2
  377. 3  LINE(x,y)-(x1,y1),a,b
  378.    LINE(x,y)-(x1,y1),a
  379.    LINE(x,y1)-(x1,y),a
  380.    PAINT(x+p1,y+8),2
  381.    IF a = farbe THEN EXIT SUB
  382.    a = farbe:GOTO 3:END SUB    
  383. SUB eingabe STATIC
  384.   SHARED ausgabeart,flag2,num,flag6
  385.   IF ausgabeart=1 THEN EXIT SUB
  386. prufung:flag2=0 
  387.    IF MOUSE(0)=0 THEN prufung
  388.    x=MOUSE(1):y=MOUSE(2)  
  389.    IF x>40 AND x<163 AND y>45 AND y<170 THEN flag2=1
  390.    IF x>247 AND x<543 AND y>45 AND y<166 THEN flag2=2 
  391.    IF x<239 AND x>228 AND y>169 AND y<176 THEN tag=tag-7:flag2=3:IF tag <= 1 THEN tag=1 
  392.    IF x>583 AND x<593 AND y>169 AND y<176 THEN tag=tag+7:flag2=3:IF tag >= 360 THEN tag=360
  393.    IF flag2 = 0 THEN BEEP:EXIT SUB  
  394.    BEEP
  395.    IF flag2=3 THEN CALL werteeinsetzen:EXIT SUB 
  396.    x=INT(x/8):y=INT(y/8):IF y/2 = INT(y/2) THEN y=y+1
  397.    num=((y-7)/2)+1:w=0  
  398.    IF flag2=1 THEN COLOR 3,0:LOCATE y,x+1:PRINT"|":index=5  
  399.    IF flag2=1 THEN CALL editor(y,x,num,flag2,48!,122!,6!,19!,index,ad,0!)
  400.    IF flag2=2 THEN x=INT(x/6)*6+1:ad=INT(x/6)-5:lrand=x:rrand=x+4:LOCATE y,x+1:COLOR 0,3:PRINT"|     ":index=x+1
  401.    IF flag2=2 THEN CALL editor(y,x,num,flag2,46!,57!,lrand,rrand,index,ad,0!)
  402.    IF flag6=1 THEN CALL werteeinsetzen
  403.    END SUB
  404. SUB editor(y,x,num,flag2,ugrenze,ogrenze,lrand,rrand,index,ad,a) STATIC
  405.    SHARED flag6
  406.    e=0:IF flag6=1 THEN flag6=0:x=x+1  
  407.    IF flag2=3 THEN index=x:COLOR 2,1:hx=x
  408. 2  a$=INKEY$:IF a$ = ""THEN  2
  409.    IF ASC(a$)<ugrenze OR ASC(a$)>ogrenze THEN falsch=1
  410.    IF a$ <> CHR$(13) AND a$ <> CHR$(8) AND falsch=1 THEN falsch=0:GOTO 2
  411.    IF a$ = CHR$(13) AND flag2=1 THEN e=1:CALL ende1(y,x,num)
  412.    IF a$ = CHR$(13) AND flag2=2 THEN e=1:CALL ende2(y,x,num,lrand,ad)
  413.    IF a$ = CHR$(13) AND flag2=3 THEN e=1:CALL ende3(y,hx,num,a,rrand)
  414.    IF e=1 THEN EXIT SUB   
  415.    IF x <=  lrand AND a$=CHR$(8) THEN BEEP:x=lrand:GOTO 2
  416.    IF x >  rrand THEN BEEP:x=rrand:m=1:GOTO 2
  417.    m=0 
  418.    IF w = 0 THEN x=x+1
  419.    IF a$ <> CHR$(8) THEN w = 0 
  420.    IF a$ = CHR$(8) THEN x = x -1:a$=" ":w=w+1     
  421.    LOCATE y,x 
  422.    PRINT a$ :LOCATE y,x+1:PRINT"|"
  423.    IF w>0 THEN LOCATE y,x:PRINT"| " 
  424.    IF flag2<2 THEN nam$(num,x-index)=a$ ELSE wert1$(x-index)=a$
  425.    GOTO 2:END SUB
  426. SUB ende1(y,x,num) STATIC
  427.    SHARED flag6
  428.    FOR q = 14 TO 0 STEP -1
  429.    IF nam$(num,q)=CHR$(32) THEN nam$(num,q)=STRING$(0,32)
  430.    NEXT:aktie$(num)=STRING$(0,32)
  431.    FOR q=0 TO 14
  432.    aktie$(num)=aktie$(num)+nam$(num,q)
  433.    NEXT:a$=STRING$(16-LEN(aktie$(num)),32) 
  434.    LOCATE y,6:PRINT aktie$(num)+a$
  435.    IF x=6 THEN FOR q = 1 TO 366:wert(num,q)=0:NEXT:flag6=1:x=x+1 
  436.    BEEP:END SUB 
  437. SUB ende2(y,x,num,lrand,ad) STATIC
  438.    SHARED jahr
  439.    FOR q=0 TO 4:l$=l$+wert1$(q):wert1$(q)=STRING$(0,32):NEXT:geldi=VAL(l$):la=LEN(l$)+1:l$=STRING$(0,32)
  440.    wert(num,tag+ad)=geldi   
  441.    LOCATE y,lrand:PRINT wert(num,tag+ad);a$:BEEP
  442.    END SUB
  443. SUB ende3(y,x,num,b,rrand) STATIC 
  444.    SHARED geldi   
  445.    FOR q=0 TO 6:l$=l$+wert1$(q):wert1$(q)=STRING$(0,32):NEXT:geldi=VAL(l$):la=LEN(l$)+1:l$=STRING$(0,32)
  446.    IF b=0 THEN wahr(num)=geldi   
  447.    LOCATE y,x:PRINT geldi;STRING$(la-LEN(STR$(geldi)),32):BEEP
  448.    END SUB 
  449. achtung:
  450.    IF WINDOW(0)=2 THEN WINDOW CLOSE 2
  451.    LOCATE 5,37:COLOR 2,3:q=365:fehler$="! Unbekannter Fehler !             " 
  452.    IF ERR=53 THEN fehler$="! Datei nicht gefunden !           "
  453.    IF ERR=57 THEN fehler$="! Ein-/Ausgabefehler !             "
  454.    IF ERR=61 THEN fehler$="! Diskette voll !                  "
  455.    IF ERR=70 THEN fehler$="! Schreibschutz entfernen !        "
  456.    IF ERR=54 THEN fehler$="! Unerlaubter Aktienwert !         "
  457.    IF ERR=68 THEN fehler$="! Gerät nicht verfügbar !          "
  458.    IF ERR=51 THEN fehler$="! Interner Fehler !                ":fehler=1
  459.    IF ERR=67 THEN fehler$="! Zuviele Dateien !                "
  460.    IF ERR=74 THEN fehler$="! Unbekannte Diskette !            "
  461.    IF ERR=62 THEN fehler$="! Zu wenige Daten !                "
  462.    PRINT fehler$:fehler=2 
  463. 14 IF MOUSE(0)>-1 GOTO 14
  464.    RESUME wahl1
  465. SUB auswahl2(a) STATIC
  466.    SHARED wahl2,hx,hy 
  467.    wahl2=0                
  468.    x=MOUSE(1):y=MOUSE(2):spalte=INT(x/58+.3)
  469.    IF a=1 AND spalte/2=INT(spalte/2) THEN spalte=spalte-1
  470.    lo(1)=8:lo(2)=15:lo(3)=27:lo(4)=34:hx=lo(spalte)
  471.    wahl2=INT(y/8)+(spalte)*9-9:hy=INT(y/8)+1
  472.    END SUB
  473. SUB statistik STATIC
  474.    SHARED hi,lo,day1,wahl,flag,day
  475. 45 CALL datensl1("Statistik"):IF e=1 THEN CALL gitter:EXIT SUB
  476.    LINE(221,41)-(609,177),3,bf:CALL gitter
  477.    WINDOW CLOSE 2:CALL linieren(235!,48!,585!,168!)
  478.    WINDOW 2,"                 Statistik",(235,58)-(585,168),0,2:CLS:PAINT(270,60),1 
  479.    LINE(48,84)-(120,98),3,bf:CALL linieren(48!,84!,120!,98!)
  480.    LINE(232,84)-(296,98),3,bf:CALL linieren(232!,84!,296!,98!)
  481.    COLOR 2,3:LOCATE 12,8:PRINT " ZURÜCK":LOCATE 12,31:PRINT "WEITER":COLOR 2,1 
  482.    LOCATE 9,13:PRINT "Bitte warten..(7 sek)"
  483.    CALL hilo(wahl,13!):LOCATE 9,10:PRINT "                              "
  484.    LOCATE 2,3  :PRINT "Name der Aktie  :  ";aktie$(wahl)
  485.    LOCATE 3,3:PRINT "Kurswert        : ";wert(wahl,tag)
  486.    LOCATE 4,3:PRINT "höchster Wert   : ";hi;:LOCATE 4,29:PRINT  "(";tag$(day);")"
  487.    LOCATE 5,3:PRINT "niederster Wert : ";lo;:LOCATE 5,29:PRINT  "(";tag$(day1);")"
  488.    LOCATE 6,3:PRINT "Durchschnitt    : ";(hi+lo)/2
  489.    LOCATE 7,3:PRINT "Gewinn          : ";wert(wahl,tag)-wert(wahl,day1)
  490. 46 IF MOUSE(0)>-1 THEN 46    
  491.    CALL maus1(48!,84!,120!,98!,232!,84!,296!,98!)
  492.    IF flag=1 THEN CALL gitter:EXIT SUB
  493.    CALL gitter:GOTO 45
  494.    END SUB           
  495. SUB changer STATIC
  496.    SHARED flag
  497.    CALL aufbau("               Valuten-Kurse","ZURÜCK")
  498.    COLOR 0,1:z(1)=7:z(2)=14:z(3)=26:z(4)=33
  499.    FOR q=0 TO 3:FOR w=1 TO 9
  500.    LOCATE  1+w,z(q+1):PRINT wahr(q*9+w):NEXT:NEXT                                     
  501. 22 flag=0:CALL maus2(0!):IF flag>0 THEN OPEN "Kurse" FOR OUTPUT AS #1:FOR q= 1 TO 36:PRINT #1,wahr(q):NEXT:CLOSE #1:WINDOW CLOSE 2:WINDOW OUTPUT 1:CALL gitter:EXIT SUB
  502.    GOTO 22
  503.    END SUB 
  504. SUB umrechnen STATIC
  505.    SHARED flag,geldi,wahl2
  506.    CALL aufbau("                Umrechnen","NULL"):z(1)=7:z(2)=26:COLOR 2,1 
  507. 23 i=0:FOR q=0 TO 1:FOR w=1 TO 9:lang=LEN(STR$(geld(w+i))):a$=LEFT$(STR$(geld(w+i)),14)
  508.    a$=a$+STRING$(15-LEN(a$),32):LOCATE 1+w,z(q+1):PRINT a$:NEXT:i=18:NEXT   
  509.    flag=0:CALL maus2(1!):IF flag>1 THEN WINDOW CLOSE 2:WINDOW OUTPUT 1:CALL gitter:EXIT SUB
  510.    IF flag=1 THEN FOR q=0 TO 36:geld(q)=0:NEXT:GOTO 23
  511.    grosch=geldi*wahr(wahl2)  
  512.    FOR q=1 TO 36:geld(q)=grosch/wahr(q):NEXT:GOTO 23
  513.    END SUB  
  514. SUB aufbau(a$,heli$) STATIC
  515.    SHARED flag,wahl2,flag1
  516.    FOR q=1 TO 36:geld(q)=0:NEXT
  517.    LINE(221,41)-(609,177),3,bf:WINDOW CLOSE 2:CALL linieren(235!,48!,585!,168!)
  518.    WINDOW 2,a$,(235,58)-(585,168),0,2:PAINT (240,60),1
  519.    x=0:COLOR 3,1:FOR q=1 TO 18:y=q:IF y>=10 THEN y=y-9:x=20
  520.    LOCATE y+1,x+4:PRINT defis$(q):NEXT
  521.    LINE (48,84)-(120,98),3,bf:CALL linieren(48!,84!,120!,98!)
  522.    LINE (232,84)-(304,98),3,bf:CALL linieren(232!,84!,304!,98!)
  523.    COLOR 2,3:LOCATE 12,8:PRINT heli$:LOCATE 12,31:PRINT "ZURÜCK"
  524.    END SUB
  525. SUB dividende STATIC
  526.    SHARED e,flag,grafikfehler,wahl,hi,lo
  527.    CALL datensl1("Dividende"):CALL gitter:IF e=1 THEN EXIT SUB   
  528.    LINE(221,41)-(609,177),3,bf:WINDOW CLOSE 2:CALL linieren(235!,48!,586!,172!)
  529.    WINDOW 2,"                 Dividende",(235,58)-(585,172),0,2:PAINT (240,60),1 
  530. 63 LINE(48,84)-(120,98),3,bf:CALL linieren(48!,84!,120!,98!):proz=0
  531.    LINE(232,84)-(304,98),3,bf:CALL linieren(232!,84!,304!,98!)
  532.    COLOR 2,3:LOCATE 12,11:PRINT "OK":LOCATE 12,32:PRINT "ZURÜCK":flag=0
  533.    CALL dreieck(140!,84!,160!,96!,18!,1!):CALL dreieck(192!,84!,212!,96!,2!,1!)
  534.    COLOR 2,1:LOCATE 2,6:PRINT "Dividende :":LOCATE 2,25:PRINT aktie$(wahl)
  535.    grafikfehler=0
  536. 60 COLOR 2,3:LOCATE 2,18:PRINT LEFT$(STR$(proz),4)+" ":COLOR 2,1
  537.    IF MOUSE(0)>-1 THEN GOTO 60
  538.    x=MOUSE(1):y=MOUSE(2)
  539.    IF x>48 AND x<120 AND y>80 THEN GOTO 61  
  540.    IF x>232 AND x<304 AND y>80 THEN CALL gitter:EXIT SUB
  541.    IF x>140 AND x<160 AND y>84 AND y<96 THEN proz=proz-.1
  542.    IF x>192 AND x<212 AND y>84 AND y<96 THEN proz=proz+.1
  543.    IF proz<=0 THEN proz=0
  544.    IF proz>=99 THEN proz=99
  545.    FOR q=1 TO 6000:NEXT:GOTO 60
  546. 61 CLS:BEEP:diwij=0:FOR q= 1 TO 12 
  547.    LOCATE q,2:PRINT monat$(q):CALL hilo(wahl,q):LOCATE q,18:PRINT ":" 
  548.    diwi=(hi-wert(wahl,1))/100*proz:IF diwi<0 THEN diwi=0:diwi$="Verlust" ELSE diwi$=STR$(diwi)+"           "
  549.    LOCATE q,20:PRINT diwi$:diwij=diwij+diwi:NEXT
  550.    LINE(140,95)-(250,95),2:LOCATE 13,2:PRINT aktie$(wahl);" (";LEFT$(STR$(proz),4);" %)":LOCATE 13,20:PRINT "+";diwij
  551. 62 IF MOUSE(0)>-1 THEN GOTO 62
  552.    CLS:GOTO 63
  553.    END SUB
  554.  SUB maus2(a) STATIC
  555.    SHARED flag,wahl2,hy,hx
  556. 40 IF MOUSE(0)>-1 THEN 40
  557.    IF MOUSE(2)>80 THEN CALL maus1(48!,84!,120!,98!,232!,84!,296!,98!):IF flag<>0 THEN EXIT SUB  
  558.    CALL auswahl2(a):COLOR 2,1:BEEP 
  559.    LOCATE INT(hy),INT(hx):PRINT"|":CALL editor(hy,hx-1,wahl2,3!,46!,57!,7!,hx+4,hx-1,0!,a) 
  560.    END SUB
  561. SUB drucken STATIC
  562.    SHARED jahr,wahl
  563.    CALL datensl1("Drucken"):CALL gitter
  564.    OPEN "lpt1:" FOR OUTPUT AS#2
  565.    PRINT #2,aktie$(wahl)+STR$(1988+jahr)
  566.    FOR q=1 TO 366
  567.    PRINT #2,tag$(q)+" "+STR$(wert(wahl,q))
  568.    IF wert(wahl,q)=0 THEN q=365
  569.    NEXT
  570.    CLOSE #2:CALL gitter:END SUB
  571. SUB sure(a$) STATIC
  572.    SHARED flag
  573.    WINDOW CLOSE 2
  574.    LINE (221,41)-(609,176),3,bf:CALL linieren(300!,50!,500!,120!)
  575.    WINDOW 2,a$,(300,60)-(500,120),0,2:PAINT (10,10),1
  576.    LINE(30,20)-(90,34),3,bf:LINE(110,20)-(170,34),3,bf
  577.    CALL linieren(30!,20!,90!,34!):CALL linieren(110!,20!,170!,34!)
  578.    COLOR 2,3:LOCATE 4,8:PRINT "JA":LOCATE 4,17:PRINT "NEIN"
  579.    CALL maus1(30!,20!,90!,34!,110!,20!,170!,34!)
  580.    END SUB
  581.    
  582.    
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.